<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Extreme programming</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Extreme_programming"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Extreme_programming rootpage-Extreme_programming skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Extreme programming</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">
<p class="mw-empty-elt">
</p>
<style data-mw-deduplicate="TemplateStyles:r1129693374">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1246091330">
/* start https://en.wikipedia.org/ */
.mw-parser-output .sidebar{width:22em;float:right;clear:right;margin:0.5em 0 1em 1em;background:var(--background-color-neutral-subtle,#f8f9fa);border:1px solid var(--border-color-base,#a2a9b1);padding:0.2em;text-align:center;line-height:1.4em;font-size:88%;border-collapse:collapse;display:table}body.skin-minerva .mw-parser-output .sidebar{display:table!important;float:right!important;margin:0.5em 0 1em 1em!important}.mw-parser-output .sidebar-subgroup{width:100%;margin:0;border-spacing:0}.mw-parser-output .sidebar-left{float:left;clear:left;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-none{float:none;clear:both;margin:0.5em 1em 1em 0}.mw-parser-output .sidebar-outer-title{padding:0 0.4em 0.2em;font-size:125%;line-height:1.2em;font-weight:bold}.mw-parser-output .sidebar-top-image{padding:0.4em}.mw-parser-output .sidebar-top-caption,.mw-parser-output .sidebar-pretitle-with-top-image,.mw-parser-output .sidebar-caption{padding:0.2em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-pretitle{padding:0.4em 0.4em 0;line-height:1.2em}.mw-parser-output .sidebar-title,.mw-parser-output .sidebar-title-with-pretitle{padding:0.2em 0.8em;font-size:145%;line-height:1.2em}.mw-parser-output .sidebar-title-with-pretitle{padding:0.1em 0.4em}.mw-parser-output .sidebar-image{padding:0.2em 0.4em 0.4em}.mw-parser-output .sidebar-heading{padding:0.1em 0.4em}.mw-parser-output .sidebar-content{padding:0 0.5em 0.4em}.mw-parser-output .sidebar-content-with-subgroup{padding:0.1em 0.4em 0.2em}.mw-parser-output .sidebar-above,.mw-parser-output .sidebar-below{padding:0.3em 0.8em;font-weight:bold}.mw-parser-output .sidebar-collapse .sidebar-above,.mw-parser-output .sidebar-collapse .sidebar-below{border-top:1px solid #aaa;border-bottom:1px solid #aaa}.mw-parser-output .sidebar-navbar{text-align:right;font-size:115%;padding:0 0.4em 0.4em}.mw-parser-output .sidebar-list-title{padding:0 0.4em;text-align:left;font-weight:bold;line-height:1.6em;font-size:105%}.mw-parser-output .sidebar-list-title-c{padding:0 0.4em;text-align:center;margin:0 3.3em}@media(max-width:640px){body.mediawiki .mw-parser-output .sidebar{width:100%!important;clear:both;float:none!important;margin-left:0!important;margin-right:0!important}}body.skin--responsive .mw-parser-output .sidebar a>img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-night .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-list-title,html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle{background:transparent!important}html.skin-theme-clientpref-os .mw-parser-output .sidebar:not(.notheme) .sidebar-title-with-pretitle a{color:var(--color-progressive)!important}}@media print{body.ns-0 .mw-parser-output .sidebar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><table class="sidebar sidebar-collapse nomobile"><tbody><tr><td class="sidebar-pretitle">Part of a series on</td></tr><tr><th class="sidebar-title-with-pretitle"><a href="Software_development" title="Software development">Software development</a></th></tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Core activities</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Data_modeling" title="Data modeling">Data modeling</a></li>
<li><a href="Software_development_process" title="Software development process">Processes</a></li>
<li><a href="Requirements_analysis" title="Requirements analysis">Requirements</a></li>
<li><a href="Software_design" title="Software design">Design</a></li>
<li><a href="Software_construction" title="Software construction">Construction</a></li>
<li><a href="Software_engineering" title="Software engineering">Engineering</a></li>
<li><a href="Software_testing" title="Software testing">Testing</a></li>
<li><a href="Debugging" title="Debugging">Debugging</a></li>
<li><a href="Software_deployment" title="Software deployment">Deployment</a></li>
<li><a href="Software_maintenance" title="Software maintenance">Maintenance</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Paradigms and models</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Agile_software_development" title="Agile software development">Agile</a></li>
<li><a href="Cleanroom_software_engineering" title="Cleanroom software engineering">Cleanroom</a></li>
<li><a href="Incremental_build_model" title="Incremental build model">Incremental</a></li>
<li><a href="Software_prototyping" title="Software prototyping">Prototyping</a></li>
<li><a href="Spiral_model" title="Spiral model">Spiral</a></li>
<li><a href="V-model_(software_development)" title="V-model (software development)">V model</a></li>
<li><a href="Waterfall_model" title="Waterfall model">Waterfall</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Software_development_methodology" class="mw-redirect" title="Software development methodology">Methodologies</a> and frameworks</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Adaptive_software_development" title="Adaptive software development">ASD</a></li>
<li><a href="Disciplined_agile_delivery" title="Disciplined agile delivery">DAD</a></li>
<li><a href="DevOps" title="DevOps">DevOps</a></li>
<li><a href="Dynamic_systems_development_method" title="Dynamic systems development method">DSDM</a></li>
<li><a href="Feature-driven_development" title="Feature-driven development">FDD</a></li>
<li><a href="Iterative_and_incremental_development" title="Iterative and incremental development">IID</a></li>
<li><a href="Kanban_(development)" title="Kanban (development)">Kanban</a></li>
<li><a href="Lean_software_development" title="Lean software development">Lean SD</a></li>
<li><a href="Scrum_(software_development)#Large-scale_Scrum" title="Scrum (software development)">LeSS</a></li>
<li><a href="Model-driven_development" class="mw-redirect" title="Model-driven development">MDD</a></li>
<li><a href="Microsoft_Solutions_Framework" title="Microsoft Solutions Framework">MSF</a></li>
<li><a href="Personal_software_process" title="Personal software process">PSP</a></li>
<li><a href="Rapid_application_development" title="Rapid application development">RAD</a></li>
<li><a href="Rational_unified_process" title="Rational unified process">RUP</a></li>
<li><a href="Scaled_agile_framework" title="Scaled agile framework">SAFe</a></li>
<li><a href="Scrum_(software_development)" title="Scrum (software development)">Scrum</a></li>
<li><a href="SEMAT" title="SEMAT">SEMAT</a></li>
<li><a href="Test-driven_development" title="Test-driven development">TDD</a></li>
<li><a href="Team_software_process" title="Team software process">TSP</a></li>
<li><a href="Unified_process" title="Unified process">UP</a></li>
</ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Supporting disciplines</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Software_configuration_management" title="Software configuration management">Configuration management</a></li>
<li><a href="Deployment_management#Computer_science" title="Deployment management">Deployment management</a></li>
<li><a href="Software_documentation" title="Software documentation">Documentation</a></li>
<li><a href="Software_project_management" title="Software project management">Project management</a></li>
<li><a href="Software_quality_assurance" title="Software quality assurance">Quality assurance</a></li>
<li><a href="User_experience" title="User experience">User experience</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Practices</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Acceptance_test-driven_development" title="Acceptance test-driven development">ATDD</a></li>
<li><a href="Behavior-driven_development" title="Behavior-driven development">BDD</a></li>
<li><a href="Extreme_programming_practices#Collective_code_ownership" title="Extreme programming practices">CCO</a></li>
<li><a href="Continuous_delivery" title="Continuous delivery">CD</a></li>
<li><a href="Continuous_integration" title="Continuous integration">CI</a></li>
<li><a href="Domain-driven_design" title="Domain-driven design">DDD</a></li>
<li><a href="Pair_programming" title="Pair programming">PP</a></li>
<li><a href="Specification_by_example" title="Specification by example">SBE</a></li>
<li><a href="Stand-up_meeting" title="Stand-up meeting">Stand-up</a></li>
<li><a href="Test-driven_development" title="Test-driven development">TDD</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)"><a href="Programming_tool" title="Programming tool">Tools</a></div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Build_automation" title="Build automation">Build automation</a></li>
<li><a href="Compiler" title="Compiler">Compiler</a></li>
<li><a href="Debugger" title="Debugger">Debugger</a></li>
<li><a href="Graphical_user_interface_builder" title="Graphical user interface builder">GUI builder</a></li>
<li><a href="Integrated_development_environment" title="Integrated development environment">IDE</a></li>
<li><a href="Infrastructure_as_code" title="Infrastructure as code">Infrastructure as code</a></li>
<li><a href="Profiling_(computer_programming)" title="Profiling (computer programming)">Profiler</a></li>
<li><a href="Application-release_automation" title="Application-release automation">Release automation</a></li>
<li><a href="UML_tool" title="UML tool">UML Modeling</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Standards and bodies of knowledge</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Capability_Maturity_Model_Integration" title="Capability Maturity Model Integration">CMMI</a></li>
<li><a href="IEEE_Standards_Association" title="IEEE Standards Association">IEEE standards</a></li>
<li><a href="International_Requirements_Engineering_Board" title="International Requirements Engineering Board">IREB</a></li>
<li><a href="ISO_9001" class="mw-redirect" title="ISO 9001">ISO 9001</a></li>
<li><a href="ISO/IEC_JTC_1/SC_7" title="ISO/IEC JTC 1/SC 7">ISO/IEC standards</a></li>
<li><a href="ITIL" title="ITIL">ITIL</a></li>
<li><a href="Object_Management_Group" title="Object Management Group">OMG</a></li>
<li><a href="Project_Management_Body_of_Knowledge" title="Project Management Body of Knowledge">PMBOK</a></li>
<li><a href="Software_Engineering_Body_of_Knowledge" title="Software Engineering Body of Knowledge">SWEBOK</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Glossaries</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Glossary_of_artificial_intelligence" title="Glossary of artificial intelligence">Artificial intelligence</a></li>
<li><a href="Glossary_of_computer_science" title="Glossary of computer science">Computer science</a></li>
<li><a href="Glossary_of_electrical_and_electronics_engineering" title="Glossary of electrical and electronics engineering">Electrical and electronics engineering</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-content">
<div class="sidebar-list mw-collapsible mw-collapsed"><div class="sidebar-list-title" style="color: var(--color-base)">Outlines</div><div class="sidebar-list-content mw-collapsible-content hlist">
<ul><li><a href="Outline_of_software_development" title="Outline of software development">Outline of software development</a></li></ul></div></div></td>
</tr><tr><td class="sidebar-navbar"><style data-mw-deduplicate="TemplateStyles:r1239400231">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></td></tr></tbody></table>
<p><b>Extreme programming</b> (<b>XP</b>) is a <a href="Software_development_methodology" class="mw-redirect" title="Software development methodology">software development methodology</a> intended to improve <a href="Software_quality" title="Software quality">software quality</a> and responsiveness to changing customer requirements. As a type of <a href="Agile_software_development" title="Agile software development">agile software development</a>,<sup id="cite_ref-Informatics85_1-0" class="reference"><a href="#cite_note-Informatics85-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-UPenn49_2-0" class="reference"><a href="#cite_note-UPenn49-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-USFCA601_3-0" class="reference"><a href="#cite_note-USFCA601-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> it advocates frequent <a href="Software_release_life_cycle" title="Software release life cycle">releases</a> in short development cycles, intended to improve productivity and introduce checkpoints at which new customer requirements can be adopted.
</p><p>Other elements of extreme programming include programming <a href="Pair_programming" title="Pair programming">in pairs</a> or doing extensive <a href="Code_review" title="Code review">code review</a>, <a href="Unit_testing" title="Unit testing">unit testing</a> of all code, <a href="You_aren't_gonna_need_it" title="You aren't gonna need it">not programming features until they are actually needed</a>, a flat management structure, code simplicity and clarity, expecting changes in the customer's requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers.<sup id="cite_ref-UPenn49_2-1" class="reference"><a href="#cite_note-UPenn49-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-USFCA601_3-1" class="reference"><a href="#cite_note-USFCA601-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-MASD_4-0" class="reference"><a href="#cite_note-MASD-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to "extreme" levels. As an example, <a href="Code_review" title="Code review">code reviews</a> are considered a beneficial practice; taken to the extreme, code can be reviewed <i>continuously</i> (i.e. the practice of <a href="Pair_programming" title="Pair programming">pair programming</a>).
</p>
<style data-mw-deduplicate="TemplateStyles:r886046785">
/* start https://en.wikipedia.org/ */
.mw-parser-output .toclimit-2 .toclevel-1 ul,.mw-parser-output .toclimit-3 .toclevel-2 ul,.mw-parser-output .toclimit-4 .toclevel-3 ul,.mw-parser-output .toclimit-5 .toclevel-4 ul,.mw-parser-output .toclimit-6 .toclevel-5 ul,.mw-parser-output .toclimit-7 .toclevel-6 ul{display:none}
/* end https://en.wikipedia.org/ */
</style><div class="toclimit-3"><meta property="mw:PageProp/toc"></div>
<div class="mw-heading mw-heading2"><h2 id="History">History</h2></div>
<p><a href="Kent_Beck" title="Kent Beck">Kent Beck</a> developed extreme programming during his work on the <a href="Chrysler_Comprehensive_Compensation_System" title="Chrysler Comprehensive Compensation System">Chrysler Comprehensive Compensation System</a> (C3) payroll <a href="Project" title="Project">project</a>.<sup id="cite_ref-Cworld92_5-0" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Beck became the C3 <a href="Project_management" title="Project management">project leader</a> in March 1996. He began to refine the development methodology used in the project and wrote a book on the methodology (<i>Extreme Programming Explained</i>, published in October 1999).<sup id="cite_ref-Cworld92_5-1" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> <a href="Chrysler" title="Chrysler">Chrysler</a> cancelled the C3 project in February 2000, after seven years, when <a href="Daimler-Benz" class="mw-redirect" title="Daimler-Benz">Daimler-Benz</a> acquired the company.<sup id="cite_ref-SR_6-0" class="reference"><a href="#cite_note-SR-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> <a href="Ward_Cunningham" title="Ward Cunningham">Ward Cunningham</a> was another major influence on XP.
</p><p>Many extreme-programming practices have been around for some time; the methodology takes "<a href="Best_practices" class="mw-redirect" title="Best practices">best practices</a>" to extreme levels. For example, the "practice of test-first development, planning and writing tests before each micro-increment" was used as early as NASA's <a href="Project_Mercury" title="Project Mercury">Project Mercury</a>, in the early 1960s.<sup id="cite_ref-FOOTNOTELarmanBasili2003_7-0" class="reference"><a href="#cite_note-FOOTNOTELarmanBasili2003-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> To shorten the total development time, some formal test documents (such as for <a href="Acceptance_testing" title="Acceptance testing">acceptance testing</a>) have been developed in parallel with (or shortly before) the software being ready for testing. A NASA independent test group can write the test procedures, based on formal requirements and logical limits, before programmers write the software and integrate it with the hardware. XP takes this concept to the extreme level, writing automated tests (sometimes inside software modules) which validate the operation of even small sections of software coding, rather than only testing the larger features.
</p>
<div class="mw-heading mw-heading3"><h3 id="Origins">Origins</h3></div>
<p>Two major influences shaped software development in the 1990s:
</p>
<ul><li>Internally, <a href="Object-oriented_programming" title="Object-oriented programming">object-oriented programming</a> replaced <a href="Procedural_programming" title="Procedural programming">procedural programming</a> as the programming paradigm favored by some developers.</li>
<li>Externally, the rise of the Internet and the <a href="Dot-com_boom" class="mw-redirect" title="Dot-com boom">dot-com boom</a> emphasized speed-to-market and company growth as competitive business factors.</li></ul>
<p>Rapidly changing requirements demanded shorter <a href="Product_life_cycle_management" class="mw-redirect" title="Product life cycle management">product life-cycles</a>, and often clashed with traditional methods of software development.
</p><p>The Chrysler Comprehensive Compensation System (C3) started in order to determine the best way to use object technologies, using the payroll systems at Chrysler as the object of research, with <a href="Smalltalk" title="Smalltalk">Smalltalk</a> as the language and <a href="Gemstone_Database_Management_System" class="mw-redirect" title="Gemstone Database Management System"> GemStone</a> as the <a href="Data_access_layer" title="Data access layer">data access layer</a>. Chrysler brought in <a href="Kent_Beck" title="Kent Beck">Kent Beck</a>,<sup id="cite_ref-Cworld92_5-2" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> a prominent Smalltalk practitioner, to do <a href="Performance_tuning" title="Performance tuning">performance tuning</a> on the system, but his role expanded as he noted several problems with the development process. He took this opportunity to propose and implement some changes in development practices - based on his work with his frequent collaborator, <a href="Ward_Cunningham" title="Ward Cunningham">Ward Cunningham</a>. Beck describes the early conception of the methods:<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>
</p>
<style data-mw-deduplicate="TemplateStyles:r1244412712">
/* start https://en.wikipedia.org/ */
.mw-parser-output .templatequote{overflow:hidden;margin:1em 0;padding:0 32px}.mw-parser-output .templatequotecite{line-height:1.5em;text-align:left;margin-top:0}@media(min-width:500px){.mw-parser-output .templatequotecite{padding-left:1.6em}}
/* end https://en.wikipedia.org/ */
</style><blockquote class="templatequote"><p>The first time I was asked to lead a team, I asked them to do a little bit of the things I thought were sensible, like testing and reviews. The second time there was a lot more on the line. I thought, "Damn the torpedoes, at least this will make a good article," [and] asked the team to crank up all the knobs to 10 on the things I thought were essential and leave out everything else.</p></blockquote>
<p>Beck invited <a href="Ron_Jeffries" title="Ron Jeffries">Ron Jeffries</a> to the project to help develop and refine these methods. Jeffries thereafter acted as a coach to instill the practices as habits in the C3 team.
</p><p>Information about the principles and practices behind XP disseminated to the wider world through discussions on the original <a href="Wiki" title="Wiki">wiki</a>, Cunningham's <a href="WikiWikiWeb" title="WikiWikiWeb">WikiWikiWeb</a>. Various contributors discussed and expanded upon the ideas, and some spin-off methodologies resulted (see <a href="Agile_software_development" title="Agile software development">agile software development</a>). Also, XP concepts have been explained, for several years, using a <a href="Hypertext" title="Hypertext">hypertext</a> system map on the XP website at <a rel="nofollow" class="external free" href="http://www.extremeprogramming.org">http://www.extremeprogramming.org</a> <abbr title="circa">c.</abbr><span style="white-space:nowrap;"> 1999</span>.
</p><p>Beck edited a series of books on XP, beginning with his own <i>Extreme Programming Explained</i> (1999, <style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */
.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}
/* end https://en.wikipedia.org/ */
</style><a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>0-201-61641-6</bdi>), spreading his ideas to a much larger audience. Authors in the series went through various aspects attending XP and its practices. The series included a book critical of the practices.
</p>
<div class="mw-heading mw-heading3"><h3 id="Current_state">Current state</h3></div>
<p>XP generated significant interest among software communities in the late 1990s and early 2000s, seeing adoption in a number of environments radically different from its origins.
</p><p>The high discipline required by the original practices often went by the wayside, causing some of these practices, such as those thought too rigid, to be deprecated or reduced, or even left unfinished, on individual sites. For example, the practice of end-of-day <a href="Integration_test" class="mw-redirect" title="Integration test">integration tests</a> for a particular project could be changed to an end-of-week schedule, or simply reduced to testing on mutually agreed dates. Such a more relaxed schedule could avoid people feeling rushed to generate artificial stubs just to pass the end-of-day testing. A less-rigid schedule allows, instead, the development of complex features over a period of several days.
</p><p>Meanwhile, other agile-development practices have not stood still, and as of 2019 XP continues to evolve, assimilating more lessons from experiences in the field, to use other practices. In the second edition of <i>Extreme Programming Explained</i> (November 2004), five years after the first edition, Beck added more values and practices and differentiated between primary and corollary practices.
</p>
<div class="mw-heading mw-heading2"><h2 id="Concept">Concept</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1305433154">
/* start https://en.wikipedia.org/ */
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style>
<div class="mw-heading mw-heading3"><h3 id="Goals">Goals</h3></div>
<p><i>Extreme Programming Explained</i> describes extreme programming as a software-development discipline that organizes people to produce higher-quality software more productively.
</p><p>XP attempts to reduce the cost of changes in requirements by having multiple short development cycles, rather than a long one.
In this doctrine, changes are a natural, inescapable and desirable aspect of software-development projects, and should be planned for, instead of attempting to define a stable set of requirements.
</p><p>Extreme programming also introduces a number of basic values, principles and practices on top of the agile methodology.
</p>
<div class="mw-heading mw-heading3"><h3 id="Activities">Activities</h3></div>
<p>XP describes four basic activities that are performed within the software development process: coding, testing, listening, and designing. Each of those activities is described below.
</p>
<div class="mw-heading mw-heading4"><h4 id="Coding">Coding</h4></div>
<p>The advocates of XP argue that the only truly important product of the system development process is code – software instructions that a computer can interpret. Without code, there is no working product.
</p><p>Coding can be used to figure out the most suitable solution. Coding can also help to communicate thoughts about programming problems. A programmer dealing with a complex programming problem, or finding it hard to explain the solution to fellow programmers, might code it in a simplified manner and use the code to demonstrate what they mean. Code, say the proponents of this position, is always clear and concise and cannot be interpreted in more than one way. Other programmers can give feedback on this code by also coding their thoughts.
</p>
<div class="mw-heading mw-heading4"><h4 id="Testing">Testing</h4></div>
<style data-mw-deduplicate="TemplateStyles:r1236090951">
/* start https://en.wikipedia.org/ */
.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}
/* end https://en.wikipedia.org/ */
</style><div role="note" class="hatnote navigation-not-searchable">Main article: <a href="Test-driven_development" title="Test-driven development">Test-driven development</a></div>
<p>Testing is central to extreme programming.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> Extreme programming's approach is that if a little testing can eliminate a few flaws, a lot of testing can eliminate many more flaws.
</p>
<ul><li><a href="Unit_test" class="mw-redirect" title="Unit test">Unit tests</a> determine whether a given feature works as intended. Programmers write as many automated tests as they can think of that might "break" the code; if all tests run successfully, then the coding is complete. Every piece of code that is written is tested before moving on to the next feature.</li>
<li><a href="Acceptance_test" class="mw-redirect" title="Acceptance test">Acceptance tests</a> verify that the requirements as understood by the programmers satisfy the customer's actual requirements.</li></ul>
<p>System-wide <a href="Integration_testing" title="Integration testing">integration testing</a> was encouraged, initially, as a daily end-of-day activity, for early detection of incompatible interfaces, to reconnect before the separate sections diverged widely from coherent functionality. However, system-wide integration testing has been reduced, to weekly, or less often, depending on the stability of the overall interfaces in the system.
</p>
<div class="mw-heading mw-heading4"><h4 id="Listening">Listening</h4></div>
<p>Programmers must listen to what the customers need the system to do, what "<a href="Business_logic" title="Business logic">business logic</a>" is needed. They must understand these needs well enough to give the customer feedback about the technical aspects of how the problem might be solved, or cannot be solved. Communication between the customer and programmer is further addressed in the <i><a href="Planning_game" class="mw-redirect" title="Planning game">planning game</a></i>.
</p>
<div class="mw-heading mw-heading4"><h4 id="Designing">Designing</h4></div>
<p>From the point of view of simplicity, of course one could say that system development doesn't need more than coding, testing and listening. If those activities are performed well, the result should always be a system that works. In practice, this will not work. One can come a long way without designing but at a given time one will get stuck. The system becomes too complex and the dependencies within the system cease to be clear. One can avoid this by creating a design structure that organizes the logic in the system. Good design will avoid many dependencies within a system; this means that changing one part of the system will not affect other parts of the system.
</p>
<div class="mw-heading mw-heading3"><h3 id="Values">Values</h3></div>
<p>Extreme programming initially recognized four values in 1999: communication, simplicity, feedback, and courage. A new value, respect, was added in the second edition of <i>Extreme Programming Explained</i>. Those five values are described below.
</p>
<div class="mw-heading mw-heading4"><h4 id="Communication">Communication</h4></div>
<p>Building software systems requires communicating system requirements to the developers of the system. In formal software development methodologies, this task is accomplished through documentation. Extreme programming techniques can be viewed as methods for rapidly building and disseminating institutional knowledge among members of a development team. The goal is to give all developers a shared view of the system which matches the view held by the users of the system. To this end, extreme programming favors simple designs, common metaphors, collaboration of users and programmers, frequent verbal communication, and feedback.
</p>
<div class="mw-heading mw-heading4"><h4 id="Simplicity">Simplicity</h4></div>
<p>Extreme programming encourages starting with the simplest solution. Extra functionality can then be added later. The difference between this approach and more conventional system development methods is the focus on designing and coding for the needs of today instead of those of tomorrow, next week, or next month. This is sometimes summed up as the "<a href="You_aren't_gonna_need_it" title="You aren't gonna need it">You aren't gonna need it</a>" (YAGNI) approach.<sup id="cite_ref-tr_10-0" class="reference"><a href="#cite_note-tr-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> Proponents of XP acknowledge the disadvantage that this can sometimes entail more effort tomorrow to change the system; their claim is that this is more than compensated for by the advantage of not investing in possible future requirements that might change before they become relevant. Coding and designing for uncertain future requirements implies the risk of spending resources on something that might not be needed, while perhaps delaying crucial features. Related to the "communication" value, simplicity in design and coding should improve the quality of communication. A simple design with very simple code could be easily understood by most programmers in the team.
</p>
<div class="mw-heading mw-heading4"><h4 id="Feedback">Feedback</h4></div>
<p>Within extreme programming, feedback relates to different dimensions of the system development:
</p>
<ul><li>Feedback from the system: by writing <a href="Unit_test" class="mw-redirect" title="Unit test">unit tests</a>,<sup id="cite_ref-Cworld92_5-3" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> or running periodic integration tests, the programmers have direct feedback from the state of the system after implementing changes.</li>
<li>Feedback from the customer: The functional tests (aka <a href="Acceptance_tests" class="mw-redirect" title="Acceptance tests">acceptance tests</a>) are written by the customer and the testers. They will get concrete feedback about the current state of their system. This review is planned once in every two or three weeks so the customer can easily steer the development.</li>
<li>Feedback from the team: When customers come up with new requirements in the planning game the team directly gives an estimation of the time that it will take to implement.</li></ul>
<p>Feedback is closely related to communication and simplicity. Flaws in the system are easily communicated by writing a unit test that proves a certain piece of code will break. The direct feedback from the system tells programmers to recode this part. A customer is able to test the system periodically according to the functional requirements, known as <i><a href="User_story" title="User story">user stories</a></i>.<sup id="cite_ref-Cworld92_5-4" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> To quote <a href="Kent_Beck" title="Kent Beck">Kent Beck</a>, "Optimism is an occupational hazard of programming. Feedback is the treatment."<sup id="cite_ref-Beck99_11-0" class="reference"><a href="#cite_note-Beck99-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p><p>
</p>
<div class="mw-heading mw-heading4"><h4 id="Courage">Courage</h4></div>
<p>Several practices embody courage. One is the commandment to always design and code for today and not for tomorrow. This is an effort to avoid getting bogged down in design and requiring a lot of effort to implement anything else. Courage enables developers to feel comfortable with <a href="Refactoring" class="mw-redirect" title="Refactoring">refactoring</a> their code when necessary.<sup id="cite_ref-Cworld92_5-5" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> This means reviewing the existing system and modifying it so that future changes can be implemented more easily. Another example of courage is knowing when to throw code away: courage to remove source code that is obsolete, no matter how much effort was used to create that source code. Also, courage means persistence: a programmer might be stuck on a complex problem for an entire day, then solve the problem quickly the next day, but only if they are persistent.
</p>
<div class="mw-heading mw-heading4"><h4 id="Respect">Respect</h4></div>
<p>The respect value includes respect for others as well as self-respect. Programmers should never commit changes that break compilation, that make existing unit-tests fail, or that otherwise delay the work of their peers. Members respect their own work by always striving for high quality and seeking for the best design for the solution at hand through refactoring.
</p><p>Adopting the four earlier values leads to respect gained from others in the team. Nobody on the team should feel unappreciated or ignored. This ensures a high level of motivation and encourages loyalty toward the team and toward the goal of the project. This value is dependent upon the other values, and is oriented toward teamwork.
</p>
<div class="mw-heading mw-heading3"><h3 id="Rules">Rules</h3></div>
<p>The first version of rules for XP was published in 1999 by Don Wells<sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> at the XP website. 29 rules are given in the categories of planning, managing, designing, coding, and testing. Planning, managing and designing are called out explicitly to counter claims that XP doesn't support those activities.
</p><p>Another version of XP rules was proposed by Ken Auer<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup> in XP/Agile Universe 2003. He felt XP was defined by its rules, not its practices (which are subject to more variation and ambiguity). He defined two categories: "Rules of Engagement" which dictate the environment in which software development can take place effectively, and "Rules of Play" which define the minute-by-minute activities and rules within the framework of the Rules of Engagement.
</p><p>Here are some of the rules (incomplete):
</p><p><b>Coding</b>
</p>
<ul><li>The customer is always available</li>
<li>Code the <a href="Unit_test" class="mw-redirect" title="Unit test">unit test</a> first</li>
<li>Only one pair integrates code at a time</li>
<li>Leave <a href="Program_optimization" title="Program optimization">optimization</a> until last</li>
<li>No <a href="Overtime" title="Overtime">overtime</a></li></ul>
<p><b>Testing</b>
</p>
<ul><li>All code must have <a href="Unit_tests" class="mw-redirect" title="Unit tests">unit tests</a></li>
<li>All code must pass all <a href="Unit_tests" class="mw-redirect" title="Unit tests">unit tests</a> before it can be released.</li>
<li>When a <a href="Software_bug" title="Software bug">bug</a> is found, tests are created before the bug is addressed (a bug is not an error in logic; it is a test that was not written)</li>
<li><a href="Acceptance_tests" class="mw-redirect" title="Acceptance tests">Acceptance tests</a> are run often and the results are published</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Principles">Principles</h3></div>
<p>The principles that form the basis of XP are based on the values just described and are intended to foster decisions in a system development project. The principles are intended to be more concrete than the values and more easily translated to guidance in a practical situation.
</p>
<div class="mw-heading mw-heading4"><h4 id="Feedback_2">Feedback</h4></div>
<p>Extreme programming sees feedback as most useful if it is done frequently and promptly. It stresses that minimal delay between an action and its feedback is critical to learning and making changes. Unlike traditional system development methods, contact with the customer occurs in more frequent iterations. The customer has clear insight into the system that is being developed, and can give feedback and steer the development as needed. With frequent feedback from the customer, a mistaken design decision made by the developer will be noticed and corrected quickly, before the developer spends much time implementing it.
</p><p>Unit tests contribute to the rapid feedback principle. When writing code, running the unit test provides direct feedback as to how the system reacts to the changes made. This includes running not only the unit tests that test the developer's code, but running in addition all unit tests against all the software, using an automated process that can be initiated by a single command. That way, if the developer's changes cause a failure in some other portion of the system that the developer knows little or nothing about, the automated all-unit-test suite will reveal the failure immediately, alerting the developer of the incompatibility of their change with other parts of the system, and the necessity of removing or modifying their change. Under traditional development practices, the absence of an automated, comprehensive unit-test suite meant that such a code change, assumed harmless by the developer, would have been left in place, appearing only during integration testing – or worse, only in production; and determining which code change caused the problem, among all the changes made by all the developers during the weeks or even months previous to integration testing, was a formidable task.
</p>
<div class="mw-heading mw-heading4"><h4 id="Assuming_simplicity">Assuming simplicity</h4></div>
<p>This is about treating every problem as if its solution were "extremely simple". Traditional system development methods say to plan for the future and to code for reusability. Extreme programming rejects these ideas.
</p><p>The advocates of extreme programming say that making big changes all at once does not work. Extreme programming applies incremental changes: for example, a system might have small releases every three weeks. When many little steps are made, the customer has more control over the development process and the system that is being developed.
</p>
<div class="mw-heading mw-heading4"><h4 id="Embracing_change">Embracing change</h4></div>
<p>The principle of embracing change is about not working against changes but embracing them. For instance, if at one of the iterative meetings it appears that the customer's requirements have changed dramatically, programmers are to embrace this and plan the new requirements for the next iteration.
</p>
<div class="mw-heading mw-heading2"><h2 id="Practices">Practices</h2></div>
<div role="note" class="hatnote navigation-not-searchable">Further information: <a href="Extreme_programming_practices" title="Extreme programming practices">Extreme programming practices</a></div>
<p>Extreme programming has been described as having 12 practices, grouped into four areas:
</p>
<div class="mw-heading mw-heading3"><h3 id="Fine-scale_feedback">Fine-scale feedback</h3></div>
<ul><li><a href="Pair_programming" title="Pair programming">Pair programming</a><sup id="cite_ref-Cworld92_5-6" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Planning_game" class="mw-redirect" title="Planning game">Planning game</a></li>
<li><a href="Test-driven_development" title="Test-driven development">Test-driven development</a></li>
<li><a href="Extreme_programming_practices#Whole_team" title="Extreme programming practices">Whole team</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Continuous_process">Continuous process</h3></div>
<ul><li><a href="Continuous_integration" title="Continuous integration">Continuous integration</a></li>
<li><a href="Refactoring" class="mw-redirect" title="Refactoring">Refactoring</a> or design improvement<sup id="cite_ref-Cworld92_5-7" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Extreme_programming_practices#Small_releases" title="Extreme programming practices">Small releases</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Shared_understanding">Shared understanding</h3></div>
<ul><li><a href="Extreme_programming_practices#Coding_standard" title="Extreme programming practices">Coding standards</a></li>
<li><a href="Extreme_programming_practices#Collective_code_ownership" title="Extreme programming practices">Collective code ownership</a><sup id="cite_ref-Cworld92_5-8" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Extreme_programming_practices#Simple_design" title="Extreme programming practices">Simple design</a><sup id="cite_ref-Cworld92_5-9" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li>
<li><a href="Extreme_programming_practices#System_metaphor" title="Extreme programming practices">System metaphor</a></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Programmer_welfare">Programmer welfare</h3></div>
<ul><li><a href="Extreme_programming_practices#Sustainable_pace" title="Extreme programming practices">Sustainable pace</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Controversial_aspects">Controversial aspects</h2></div>
<p>The practices in XP have been heavily debated.<sup id="cite_ref-Cworld92_5-10" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> Proponents of extreme programming claim that by having the on-site customer<sup id="cite_ref-Cworld92_5-11" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> request changes informally, the process becomes flexible, and saves the cost of formal overhead. Critics of XP claim this can lead to costly rework and project <a href="Scope_creep" title="Scope creep">scope creep</a> beyond what was previously agreed or funded.
</p><p>Change-control boards are a sign that there are potential conflicts in project objectives and constraints between multiple users. XP's expedited methods are somewhat dependent on programmers being able to assume a unified client viewpoint so the programmer can concentrate on coding, rather than documentation of compromise objectives and constraints.<sup id="cite_ref-CarrollMorris2015_14-0" class="reference"><a href="#cite_note-CarrollMorris2015-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup> This also applies when multiple programming organizations are involved, particularly organizations which compete for shares of projects.
</p><p>Other potentially controversial aspects of extreme programming include:
</p>
<ul><li>Requirements are expressed as automated acceptance tests rather than specification documents.</li>
<li>Requirements are defined incrementally, rather than trying to get them all in advance.</li>
<li>Software developers are usually required to work in pairs.</li>
<li>There is no <a href="Big_design_up_front" title="Big design up front">big design up front</a>. Most of the design activity takes place on the fly and incrementally, starting with "the simplest thing that could possibly work" and adding complexity only when it's required by failing tests. Critics characterize this as "<a href="Debugging" title="Debugging">debugging</a> a system into appearance" and fear this will result in more re-design effort than only re-designing when requirements change.</li>
<li>A <a href="Customer_representative" title="Customer representative">customer representative</a> is attached to the project. This role can become a single-point-of-failure for the project, and some people have found it to be a source of stress. Also, there is the danger of <a href="Micro-management" class="mw-redirect" title="Micro-management">micro-management</a> by a non-technical representative trying to dictate the use of technical software features and architecture.</li></ul>
<p>Critics have noted several potential drawbacks,<sup id="cite_ref-Cworld92_5-12" class="reference"><a href="#cite_note-Cworld92-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> including problems with unstable requirements, no documented compromises of user conflicts, and a lack of an overall design specification or document.
</p>
<div class="mw-heading mw-heading3"><h3 id="Scalability">Scalability</h3></div>
<p><a href="Thoughtworks" title="Thoughtworks">Thoughtworks</a> has claimed reasonable success on distributed XP projects with up to sixty people.
</p><p>In 2004, industrial extreme programming (IXP)<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> was introduced as an evolution of XP. It is intended to bring the ability to work in large and distributed teams. It now has 23 practices and flexible values.
</p>
<div class="mw-heading mw-heading3"><h3 id="Severability_and_responses">Severability and responses</h3></div>
<p>In 2003, <a href="Matt_Stephens_(author)" title="Matt Stephens (author)">Matt Stephens</a> and Doug Rosenberg published <i>Extreme Programming Refactored: The Case Against XP</i>, which questioned the value of the XP process and suggested ways in which it could be improved.<sup id="cite_ref-SR_6-1" class="reference"><a href="#cite_note-SR-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup> This triggered a lengthy debate in articles, Internet newsgroups, and web-site chat areas. The core argument of the book is that XP's practices are interdependent but that few practical organizations are willing/able to adopt all the practices; therefore the entire process fails. The book also makes other criticisms, and it draws a likeness of XP's "collective ownership" model to socialism in a negative manner.
</p><p>Certain aspects of XP have changed since the publication of <i>Extreme Programming Refactored</i>; in particular, XP now accommodates modifications to the practices as long as the required objectives are still met. XP also uses increasingly generic terms for processes. Some argue that these changes invalidate previous criticisms; others claim that this is simply watering the process down.
</p><p>Other authors have tried to reconcile XP with the older methodologies in order to form a unified methodology. Some of these XP sought to replace, such as the <a href="Waterfall_model" title="Waterfall model">waterfall methodology</a>; example <i>Project Lifecycles: Waterfall</i>, <a href="Rapid_Application_Development" class="mw-redirect" title="Rapid Application Development">Rapid Application Development</a> (RAD), etc. <a href="JPMorgan_Chase_%26_Co." class="mw-redirect" title="JPMorgan Chase & Co.">JPMorgan Chase & Co.</a> tried combining XP with the computer programming methods of <a href="Capability_maturity_model_integration" class="mw-redirect" title="Capability maturity model integration">capability maturity model integration</a> (CMMI), and <a href="Six_Sigma" title="Six Sigma">Six Sigma</a>. They found that the three systems reinforced each other well, leading to better development, and did not mutually contradict.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Criticism">Criticism</h2></div>
<p>Extreme programming's initial buzz and controversial tenets, such as <a href="Pair_programming" title="Pair programming">pair programming</a> and <a href="Continuous_design" title="Continuous design">continuous design</a>, have attracted particular criticisms, such as the ones coming from McBreen,<sup id="cite_ref-mcbreen_17-0" class="reference"><a href="#cite_note-mcbreen-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> Boehm and Turner,<sup id="cite_ref-boehm2004_18-0" class="reference"><a href="#cite_note-boehm2004-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> Matt Stephens and Doug Rosenberg.<sup id="cite_ref-stephens2004_19-0" class="reference"><a href="#cite_note-stephens2004-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup> Many of the criticisms, however, are believed by Agile practitioners to be misunderstandings of agile development.<sup id="cite_ref-sdmagazine1811_20-0" class="reference"><a href="#cite_note-sdmagazine1811-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>
</p><p>In particular, extreme programming has been reviewed and critiqued by Matt Stephens's and Doug Rosenberg's <i>Extreme Programming Refactored</i>.<sup id="cite_ref-SR_6-2" class="reference"><a href="#cite_note-SR-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Agile_software_development" title="Agile software development">Agile software development</a></li>
<li><a href="Continuous_obsolescence" title="Continuous obsolescence">Continuous obsolescence</a></li>
<li><a href="EXtreme_Manufacturing" title="EXtreme Manufacturing">EXtreme Manufacturing</a></li>
<li><a href="Extreme_project_management" title="Extreme project management">Extreme project management</a></li>
<li><a href="Extreme_programming_practices" title="Extreme programming practices">Extreme programming practices</a></li>
<li><a href="Kaizen" title="Kaizen">Kaizen</a></li>
<li><a href="List_of_software_development_philosophies" title="List of software development philosophies">List of software development philosophies</a></li>
<li><a href="Pair_programming" title="Pair programming">Pair programming</a></li>
<li><a href="Scrum_(development)" class="mw-redirect" title="Scrum (development)">Scrum (development)</a></li>
<li><a href="Software_craftsmanship" title="Software craftsmanship">Software craftsmanship</a></li>
<li><a href="Stand-up_meeting" title="Stand-up meeting">Stand-up meeting</a></li>
<li><a href="Timeboxing" title="Timeboxing">Timeboxing</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */
.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}
/* end https://en.wikipedia.org/ */
</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;">
<ol class="references">
<li id="cite_note-Informatics85-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-Informatics85_1-0">^</a></b></span> <span class="reference-text">"Human Centred Technology Workshop 2006 ", 2006, PDF, <a rel="nofollow" class="external text" href="http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.465.2140&rep=rep1&type=pdf">Human Centred Technology Workshop 2006 </a></span>
</li>
<li id="cite_note-UPenn49-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-UPenn49_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-UPenn49_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.cis.upenn.edu/~matuszek/cit591-2003/Lectures/49-design-patterns.ppt">UPenn-Lectures-design-patterns "Design Patterns and Refactoring", University of Pennsylvania, 2003</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20100802073814/http://www.cis.upenn.edu/%7Ematuszek/cit591-2003/Lectures/49-design-patterns.ppt">Archived</a> August 2, 2010, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>.</span>
</li>
<li id="cite_note-USFCA601-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-USFCA601_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-USFCA601_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.cs.usfca.edu/~parrt/course/601/lectures/xp.html">USFCA-edu-601-lecture Extreme Programming</a>.</span>
</li>
<li id="cite_note-MASD-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-MASD_4-0">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://agilemanifesto.org">"Manifesto for Agile Software Development"</a>. Agilemanifesto.org. 2001<span class="reference-accessdate">. Retrieved <span class="nowrap">March 26,</span> 2019</span>.</cite></span>
</li>
<li id="cite_note-Cworld92-5"><span class="mw-cite-backlink">^ <a href="#cite_ref-Cworld92_5-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Cworld92_5-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Cworld92_5-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Cworld92_5-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-Cworld92_5-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-Cworld92_5-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-Cworld92_5-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-Cworld92_5-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-Cworld92_5-8"><sup><i><b>i</b></i></sup></a> <a href="#cite_ref-Cworld92_5-9"><sup><i><b>j</b></i></sup></a> <a href="#cite_ref-Cworld92_5-10"><sup><i><b>k</b></i></sup></a> <a href="#cite_ref-Cworld92_5-11"><sup><i><b>l</b></i></sup></a> <a href="#cite_ref-Cworld92_5-12"><sup><i><b>m</b></i></sup></a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.computerworld.com/article/2585634/app-development/extreme-programming.html">Computerworld-appdev-92 "Extreme Programming", <i>Computerworld</i> (online), December 2001</a>.</span>
</li>
<li id="cite_note-SR-6"><span class="mw-cite-backlink">^ <a href="#cite_ref-SR_6-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-SR_6-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-SR_6-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFRosenbergStephens2003" class="citation book cs1">Rosenberg, Doug; Stephens, Matt (2003). <span class="id-lock-registration" title="Free registration required"><a rel="nofollow" class="external text" href="https://archive.org/details/extremeprogrammi00matt"><i>Extreme Programming Refactored: The Case Against XP</i></a></span>. Apress. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-59059-096-6</bdi>.</cite></span>
</li>
<li id="cite_note-FOOTNOTELarmanBasili2003-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-FOOTNOTELarmanBasili2003_7-0">^</a></b></span> <span class="reference-text"><a href="#CITEREFLarmanBasili2003">Larman & Basili 2003</a>.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><cite class="citation book cs1"><a rel="nofollow" class="external text" href="http://www.informit.com/articles/article.aspx?p=20972"><i>Interview with Kent Beck and Martin Fowler</i></a>. March 23, 2001.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite book}}</code>: </span><span class="cs1-visible-error citation-comment"><code class="cs1-code">|work=</code> ignored (help)</span></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><cite id="CITEREFLisa_CrispinTip_House2003" class="citation book cs1">Lisa Crispin; Tip House (2003). <i>Testing Extreme Programming</i>. Addison-Wesley Professional. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>9780321113559</bdi>.</cite></span>
</li>
<li id="cite_note-tr-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-tr_10-0">^</a></b></span> <span class="reference-text">"Everyone's a Programmer" by Clair Tristram. <i>Technology Review</i>, November 2003. p. 39.</span>
</li>
<li id="cite_note-Beck99-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-Beck99_11-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFBeck1999" class="citation book cs1"><a href="Kent_Beck" title="Kent Beck">Beck, K.</a> (1999). <i>Extreme Programming Explained: Embrace Change</i>. Addison-Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-321-27865-4</bdi>.</cite></span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.extremeprogramming.org/rules.html">"Extreme Programming Rules"</a>. <i>extremeprogramming.org</i>.</cite></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.rolemodelsoftware.com/moreAboutUs/publications/rulesOfXp.php">Ken Auer</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080920062925/http://www.rolemodelsoftware.com/moreAboutUs/publications/rulesOfXp.php">Archived</a> September 20, 2008, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
<li id="cite_note-CarrollMorris2015-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-CarrollMorris2015_14-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFJohn_CarrollDavid_Morris2015" class="citation book cs1">John Carroll; David Morris (July 29, 2015). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=oqFKCgAAQBAJ&pg=PT162"><i>Agile Project Management in easy steps, 2nd edition</i></a>. In Easy Steps. p. 162. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-1-84078-703-0</bdi>.</cite></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><cite id="CITEREFCutter_Consortium" class="citation web cs1">Cutter Consortium. <a rel="nofollow" class="external text" href="http://www.cutter.com/content-and-analysis/resource-centers/agile-project-management/sample-our-research/apmr0502.html">"Industrial XP: Making XP Work in Large Organizations - Cutter Consortium"</a>. <i>cutter.com</i>.</cite></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.sei.cmu.edu/library/assets/jarvis-gristock.pdf">Extreme Programming (XP) Six Sigma CMMI</a>.</span>
</li>
<li id="cite_note-mcbreen-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-mcbreen_17-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFMcBreen2003" class="citation book cs1">McBreen, P. (2003). <i>Questioning Extreme Programming</i>. Boston, MA: Addison-Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-201-84457-3</bdi>.</cite></span>
</li>
<li id="cite_note-boehm2004-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-boehm2004_18-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFBoehmR._Turner2004" class="citation book cs1"><a href="Barry_Boehm" title="Barry Boehm">Boehm, B.</a>; <a href="Richard_Turner_(computer_scientist)" title="Richard Turner (computer scientist)">R. Turner</a> (2004). <i>Balancing Agility and Discipline: A Guide for the Perplexed</i>. Boston, MA: Addison-Wesley. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-0-321-18612-6</bdi>.</cite></span>
</li>
<li id="cite_note-stephens2004-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-stephens2004_19-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFStephensDoug_Rosenberg2004" class="citation book cs1"><a href="Matt_Stephens_(author)" title="Matt Stephens (author)">Stephens, Matt</a>; Doug Rosenberg (2004). <a rel="nofollow" class="external text" href="http://www.drdobbs.com/the-irony-of-extreme-programming/184405651"><i>The irony of extreme programming</i></a>. MA: Dr Dobbs journal.</cite> <span class="cs1-visible-error citation-comment"><code class="cs1-code">{{cite book}}</code>: </span><span class="cs1-visible-error citation-comment"><code class="cs1-code">|work=</code> ignored (help)</span></span>
</li>
<li id="cite_note-sdmagazine1811-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-sdmagazine1811_20-0">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://www.sdmagazine.com/documents/s=1811/sdm0112h/0112h.htm">sdmagazine</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20060316100811/http://www.sdmagazine.com/documents/s%3D1811/sdm0112h/0112h.htm">Archived</a> March 16, 2006, at the <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a></span>
</li>
</ol></div>
<div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2></div>
<ul><li>Ken Auer and Roy Miller. <i>Extreme Programming Applied: Playing To Win</i>, Addison–Wesley.</li>
<li><cite id="CITEREFKen_AuerRon_JeffriesJeff_CannaGlen_B._Alleman2002" class="citation book cs1">Ken Auer; <a href="Ron_Jeffries" title="Ron Jeffries">Ron Jeffries</a>; Jeff Canna; Glen B. Alleman; Lisa Crispin; Janet Gregory (2002). "Are Testers eXtinct? How Can Testers Contribute to XP Teams?". <i>Extreme Programming and Agile Methods — XP/Agile Universe 2002</i>. Lecture Notes in Computer Science. Vol. 2418. Springer-Verlag. p. 287. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F3-540-45672-4_50">10.1007/3-540-45672-4_50</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <bdi>978-3-540-44024-6</bdi>.</cite></li>
<li><a href="Kent_Beck" title="Kent Beck">Kent Beck</a>: <i>Extreme Programming Explained: Embrace Change</i>, Addison–Wesley. First edition, 1999. Second edition, with Cynthia Andres, 2004.</li>
<li><a href="Kent_Beck" title="Kent Beck">Kent Beck</a> and <a href="Martin_Fowler_(software_engineer)" title="Martin Fowler (software engineer)">Martin Fowler</a>: <i>Planning Extreme Programming</i>, Addison–Wesley.</li>
<li><a href="Alistair_Cockburn" title="Alistair Cockburn">Alistair Cockburn</a>: <i>Agile Software Development</i>, Addison–Wesley.</li>
<li><a href="Martin_Fowler_(software_engineer)" title="Martin Fowler (software engineer)">Martin Fowler</a>: <i>Refactoring: Improving the Design of Existing Code</i>.With Kent Beck, John Brant, William Opdyke, and Don Roberts (1999). Addison-Wesley.</li>
<li>Harvey Herela (2005). <a rel="nofollow" class="external text" href="https://archive.today/20070715005646/http://calla.ics.uci.edu/histories/ccc/">Case Study: The Chrysler Comprehensive Compensation System</a>. Galen Lab, U.C. Irvine.</li>
<li><a href="Jim_Highsmith" title="Jim Highsmith">Jim Highsmith</a>. <i>Agile Software Development Ecosystems</i>, Addison–Wesley.</li>
<li><a href="Ron_Jeffries" title="Ron Jeffries">Ron Jeffries</a>, Ann Anderson and Chet Hendrickson (2000), <i>Extreme Programming Installed</i>, Addison–Wesley.</li>
<li><cite id="CITEREFLarmanBasili2003" class="citation journal cs1"><a href="Craig_Larman" title="Craig Larman">Larman, C.</a>; Basili, V.R. (June 2003). <a rel="nofollow" class="external text" href="https://www.craiglarman.com/wiki/downloads/misc/history-of-iterative-larman-and-basili-ieee-computer.pdf">"Iterative and incremental developments. a brief history"</a> <span class="cs1-format">(PDF)</span>. <i>Computer</i>. <b>36</b> (6): <span class="nowrap">47–</span>56. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FMC.2003.1204375">10.1109/MC.2003.1204375</a>.</cite></li>
<li><a href="Matt_Stephens_(author)" title="Matt Stephens (author)">Matt Stephens</a> and Doug Rosenberg (2003). <i>Extreme Programming Refactored: The Case Against XP</i>, Apress.</li>
<li>Waldner, JB. (2008). "Nanocomputers and Swarm Intelligence". In: ISTE, 225–256.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1290876196">
/* start https://en.wikipedia.org/ */
.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .infobox .side-box{font-size:100%}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}
/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1237033735">
/* start https://en.wikipedia.org/ */
@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}
/* end https://en.wikipedia.org/ */
</style><div class="side-box side-box-right sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */
.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}
/* end https://en.wikipedia.org/ */
</style>
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikimedia Commons has media related to <span style="font-weight: bold; font-style: italic;"><a href="https://commons.wikimedia.org/wiki/Category:Extreme_programming" class="extiw external" title="commons:Category:Extreme programming">Extreme programming</a></span>.</div></div>
</div>
<div class="side-box side-box-right sistersitebox">
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikiquote has quotations related to <i><b><a href="https://en.wikiquote.org/wiki/Special:Search/Extreme_programming" class="extiw external" title="q:Special:Search/Extreme programming">Extreme programming</a></b></i>.</div></div>
</div>
<ul><li><a rel="nofollow" class="external text" href="http://www.extremeprogramming.org">A gentle introduction</a></li>
<li><a rel="nofollow" class="external text" href="http://www.IndustrialXP.org/">Industrial eXtreme Programming</a></li>
<li><a rel="nofollow" class="external text" href="http://c2.com/cgi/wiki?ExtremeProgrammingImplementationIssues">Problems and Solutions to XP implementation</a></li>
<li><a rel="nofollow" class="external text" href="http://www.martinfowler.com/articles/agileOffshore.html">Using an Agile Software Process with Offshore Development</a> – <a href="ThoughtWorks" class="mw-redirect" title="ThoughtWorks">ThoughtWorks</a>' experiences with implementing XP in large distributed projects</li></ul>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1236075235">
/* start https://en.wikipedia.org/ */
.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox" aria-labelledby="Software_engineering336" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Software_engineering336" style="font-size:114%;margin:0 4em"><a href="Software_engineering" title="Software engineering">Software engineering</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Fields</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computer_programming" title="Computer programming">Computer programming</a></li>
<li><a href="DevOps" title="DevOps">DevOps</a></li>
<li><a href="Empirical_software_engineering" title="Empirical software engineering">Empirical software engineering</a></li>
<li><a href="Experimental_software_engineering" title="Experimental software engineering">Experimental software engineering</a></li>
<li><a href="Formal_methods" title="Formal methods">Formal methods</a></li>
<li><a href="Requirements_engineering" title="Requirements engineering">Requirements engineering</a></li>
<li><a href="Search-based_software_engineering" title="Search-based software engineering">Search-based software engineering</a></li>
<li><a href="Site_reliability_engineering" title="Site reliability engineering">Site reliability engineering</a></li>
<li><a href="Social_software_engineering" title="Social software engineering">Social software engineering</a></li>
<li><a href="Software_deployment" title="Software deployment">Software deployment</a></li>
<li><a href="Software_design" title="Software design">Software design</a></li>
<li><a href="Software_maintenance" title="Software maintenance">Software maintenance</a></li>
<li><a href="Software_testing" title="Software testing">Software testing</a></li>
<li><a href="Systems_analysis" title="Systems analysis">Systems analysis</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Abstraction_(computer_science)" title="Abstraction (computer science)">Abstraction</a></li>
<li><a href="CI/CD" title="CI/CD">CI/CD</a></li>
<li><a href="Computer_compatibility" title="Computer compatibility">Compatibility</a>
<ul><li><a href="Backward_compatibility" title="Backward compatibility">Backward compatibility</a></li>
<li><a href="Compatibility_layer" title="Compatibility layer">Compatibility layer</a></li>
<li><a href="Compatibility_mode" title="Compatibility mode">Compatibility mode</a></li>
<li><a href="Forward_compatibility" title="Forward compatibility">Forward compatibility</a></li>
<li><a href="Software_incompatibility" title="Software incompatibility">Software incompatibility</a></li></ul></li>
<li><a href="Component-based_software_engineering" title="Component-based software engineering">Component-based software engineering</a></li>
<li><a href="Data_modeling" title="Data modeling">Data modeling</a></li>
<li><a href="Enterprise_architecture" title="Enterprise architecture">Enterprise architecture</a></li>
<li><a href="Functional_specification" title="Functional specification">Functional specification</a></li>
<li><a href="Modeling_language" title="Modeling language">Modeling language</a></li>
<li><a href="Programming_paradigm" title="Programming paradigm">Programming paradigm</a></li>
<li><a href="Software" title="Software">Software</a></li>
<li><a href="Software_archaeology" title="Software archaeology">Software archaeology</a></li>
<li><a href="Software_architecture" title="Software architecture">Software architecture</a></li>
<li><a href="Software_configuration_management" title="Software configuration management">Software configuration management</a></li>
<li><a href="Software_development_process" title="Software development process">Software development process/methodology</a></li>
<li><a href="Software_quality" title="Software quality">Software quality</a></li>
<li><a href="Software_quality_assurance" title="Software quality assurance">Software quality assurance</a></li>
<li><a href="Software_system" title="Software system">Software system</a></li>
<li><a href="Software_verification_and_validation" title="Software verification and validation">Software verification and validation</a></li>
<li><a href="Structured_analysis" title="Structured analysis">Structured analysis</a>
<ul><li><a href="Essential_systems_analysis" title="Essential systems analysis">Essential analysis</a></li></ul></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Orientations</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Agile_software_development" title="Agile software development">Agile</a></li>
<li><a href="Aspect-oriented_programming" title="Aspect-oriented programming">Aspect-oriented</a></li>
<li><a href="Object-oriented_programming" title="Object-oriented programming">Object orientation</a></li>
<li><a href="Ontology_(information_science)" title="Ontology (information science)">Ontology</a></li>
<li><a href="Systems_development_life_cycle" title="Systems development life cycle">SDLC</a></li>
<li><a href="Service-oriented_architecture" title="Service-oriented architecture">Service orientation</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Models</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Developmental</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Agile_software_development" title="Agile software development">Agile</a></li>
<li><a href="Enterprise_unified_process" title="Enterprise unified process">EUP</a></li>
<li><a href="Executable_UML" title="Executable UML">Executable UML</a></li>
<li><a href="Incremental_build_model" title="Incremental build model">Incremental model</a></li>
<li><a href="Iterative_and_incremental_development" title="Iterative and incremental development">Iterative model</a></li>
<li><a href="Software_prototyping" title="Software prototyping">Prototype model</a></li>
<li><a href="Rapid_application_development" title="Rapid application development">RAD</a></li>
<li><a href="Scrum_(software_development)" title="Scrum (software development)">Scrum</a></li>
<li><a href="Spiral_model" title="Spiral model">Spiral model</a></li>
<li><a href="Unified_process" title="Unified process">UP</a></li>
<li><a href="V-model_(software_development)" title="V-model (software development)">V-model</a></li>
<li><a href="Waterfall_model" title="Waterfall model">Waterfall model</a></li>
<li><a href="Model-driven_engineering" title="Model-driven engineering">Model-driven engineering</a></li>
<li><a href="Round-trip_engineering" title="Round-trip engineering">Round-trip engineering</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Other</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Capability_Maturity_Model_Integration" title="Capability Maturity Model Integration">CMMI</a></li>
<li><a href="Data_model" title="Data model">Data model</a></li>
<li><a href="Entity%E2%80%93relationship_model" title="Entity–relationship model">ER model</a></li>
<li><a href="Function_model" title="Function model">Function model</a></li>
<li><a href="Information_model" title="Information model">Information model</a></li>
<li><a href="Metamodeling" title="Metamodeling">Metamodeling</a></li>
<li><a href="Object_model" title="Object model">Object model</a></li>
<li><a href="ISO/IEC_15504" title="ISO/IEC 15504">SPICE</a></li>
<li><a href="Systems_modeling" title="Systems modeling">Systems model</a></li>
<li><a href="View_model" title="View model">View model</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;">Languages</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="IDEF" title="IDEF">IDEF</a></li>
<li><a href="Systems_modeling_language" title="Systems modeling language">SysML</a></li>
<li><a href="Unified_Modeling_Language" title="Unified Modeling Language">UML</a></li>
<li><a href="Universal_Systems_Language" title="Universal Systems Language">USL</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="Systems_design" title="Systems design">Systems design</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Software_requirements_specification" title="Software requirements specification"> Requirements</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Functional_requirement" title="Functional requirement">Functional requirement</a></li>
<li><a href="Non-functional_requirement" title="Non-functional requirement">Non-functional requirement</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Capacity_planning" title="Capacity planning"> Capacity</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Active_users" title="Active users"> Users</a></li>
<li><a href="Central_processing_units" class="mw-redirect" title="Central processing units"> Compute</a></li>
<li><a href="Computer_memory" title="Computer memory"> Memory</a></li>
<li><a href="Computer_data_storage" title="Computer data storage"> Storage</a></li>
<li><a href="Bandwidth_(computing)" title="Bandwidth (computing)"> Network</a></li>
<li><a href="Web_traffic" title="Web traffic">Web traffic</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Interface_(computing)" title="Interface (computing)"> Interface</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="API" title="API">API</a></li>
<li><a href="SOAP" title="SOAP">SOAP</a></li>
<li><a href="REST" title="REST">REST</a></li>
<li><a href="GraphQL" title="GraphQL">GraphQL</a></li>
<li><a href="GRPC" title="GRPC">gRPC</a></li>
<li><a href="Webhook" title="Webhook">Webhook</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="High-level_design" title="High-level design">High-level design</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Client_(computing)" title="Client (computing)"> Client</a></li>
<li><a href="Load_balancing_(computing)" title="Load balancing (computing)"> Load balancing</a></li>
<li><a href="Application_server" title="Application server">Application server</a></li>
<li><a href="Message_queue" title="Message queue">Message queue</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="System_Integration" class="mw-redirect" title="System Integration"> Integration</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Vertical_integration" title="Vertical integration"> Vertical</a></li>
<li><a href="Peer-to-peer" title="Peer-to-peer">Peer-to-peer</a></li>
<li><a href="API_management" title="API management"> API Gateway</a></li>
<li><a href="Publish%E2%80%93subscribe_pattern" title="Publish–subscribe pattern"> pub-sub</a></li>
<li><a href="Event_store" title="Event store"> Event Source</a></li>
<li><a href="Extract%2C_transform%2C_load" title="Extract, transform, load"> ETL</a></li>
<li><a href="Batch_processing" title="Batch processing"> Batch</a></li>
<li><a href="Stream_processing" title="Stream processing">Stream</a></li>
<li><a href="Orchestration_(computing)" title="Orchestration (computing)"> Orchestration</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Architectures" class="mw-redirect" title="Architectures">Architectures</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Monolithic_application" title="Monolithic application"> Monolithic</a></li>
<li><a href="Microservices" title="Microservices">Microservices</a></li>
<li><a href="Event-driven_architecture" title="Event-driven architecture"> Event-Driven</a></li>
<li><a href="Client%E2%80%93server_model" title="Client–server model"> Client–server</a></li>
<li><a href="Serverless_computing" title="Serverless computing"> Serverless</a></li>
<li><a href="Circuit_breaker_design_pattern" title="Circuit breaker design pattern"> Circuit breaker</a></li>
<li><a href="Rate_limiting" title="Rate limiting">Rate limiting</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Database" title="Database">Database</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Relational_database" title="Relational database"> Relational</a></li>
<li><a href="NoSQL" title="NoSQL">NoSQL</a></li>
<li><a href="Graph_database" title="Graph database"> Graph</a></li>
<li><a href="Key%E2%80%93value_database" title="Key–value database"> Key–value</a></li>
<li><a href="Log-structured_merge-tree" title="Log-structured merge-tree"> LSM Tree </a></li>
<li><a href="Time_series_database" title="Time series database"> Time series</a></li>
<li><a href="Data_orientation" title="Data orientation"> Column Oriented</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Systems_design" title="Systems design"> Principles</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Consistency_(database_systems)" title="Consistency (database systems)">Consistency</a></li>
<li><a href="Reliability_engineering" title="Reliability engineering">Reliability</a></li>
<li><a href="CAP_theorem" title="CAP theorem">CAP theorem</a></li>
<li><a href="Software_maintenance" title="Software maintenance"> Maintainability</a></li>
<li><a href="Computer_configuration" title="Computer configuration"> Configurability</a></li>
<li><a href="Modularity" title="Modularity">Modularity</a></li>
<li><a href="Durability_(database_systems)" title="Durability (database systems)"> Durability</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Scalability" title="Scalability">Scalability</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Service_statelessness_principle" title="Service statelessness principle"> Stateless</a></li>
<li><a href="Asynchronous_I/O" title="Asynchronous I/O">Asynchronous I/O</a></li>
<li><a href="Loose_coupling" title="Loose coupling">Loose coupling</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Availability" title="Availability">Availability</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Fault_tolerance" title="Fault tolerance">Fault tolerance</a></li>
<li><a href="Failover" title="Failover">Failover</a></li>
<li><a href="Single_point_of_failure" title="Single point of failure">Single point of failure</a></li>
<li><a href="Replication_(computing)" title="Replication (computing)"> Replication</a></li>
<li><a href="Consistent_hashing" title="Consistent hashing">Consistent hashing</a></li>
<li><a href="Circuit_breaker_design_pattern" title="Circuit breaker design pattern"> Circuit breaker</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Latency_(engineering)" title="Latency (engineering)">Latency</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Cache_(computing)" title="Cache (computing)"> Cache</a></li>
<li><a href="Content_delivery_network" title="Content delivery network"> CDN</a></li>
<li><a href="Shard_(database_architecture)" title="Shard (database architecture)"> Shard </a></li>
<li><a href="Database_index" title="Database index">Database index</a></li>
<li><a href="Cache_prefetching" title="Cache prefetching"> Pre-caching</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Computer_data_storage" title="Computer data storage"> Storage</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Object_storage" title="Object storage">Object storage</a></li>
<li><a href="Block-level_storage" title="Block-level storage"> Block storage</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%;font-weight:normal;"><a href="Observability_(software)" title="Observability (software)"> Observability</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Logging_(computing)" title="Logging (computing)"> Logging</a></li>
<li><a href="Software_metric" title="Software metric"> Metrics</a></li>
<li><a href="Tracing_(software)" title="Tracing (software)"> Tracing </a></li>
<li><a href="Failure_rate" title="Failure rate"> Error rate </a></li>
<li><a href="Queries_per_second" title="Queries per second">Queries per second </a></li>
<li><a href="Notification_system" title="Notification system">Notification system</a></li>
<li><a href="Anomaly_detection" title="Anomaly detection">Anomaly detection</a></li></ul>
</div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related fields</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em">
<ul><li><a href="Computer_engineering" title="Computer engineering">Computer engineering</a></li>
<li><a href="Computer_science" title="Computer science">Computer science</a></li>
<li><a href="Information_science" title="Information science">Information science</a></li>
<li><a href="Project_management" title="Project management">Project management</a></li>
<li><a href="Risk_management" title="Risk management">Risk management</a></li>
<li><a href="Systems_engineering" title="Systems engineering">Systems engineering</a></li></ul>
</div></td></tr><tr><td class="navbox-abovebelow" colspan="2" style="font-weight:bold;"><div>
<ul><li><span class="noviewer" typeof="mw:File"><span title="Category"></span></span> Category</li>
<li><span class="noviewer" typeof="mw:File"><span title="Commons page"></span></span> <a href="https://commons.wikimedia.org/wiki/Category:Software_engineering" class="extiw external" title="commons:Category:Software engineering">Commons</a></li></ul>
</div></td></tr></tbody></table></div>
<div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1038841319">
/* start https://en.wikipedia.org/ */
.mw-parser-output .tooltip-dotted{border-bottom:1px dotted;cursor:help}
/* end https://en.wikipedia.org/ */
</style></div><div role="navigation" class="navbox authority-control" aria-labelledby="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q209711#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata1260" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><div id="Authority_control_databases_frameless&#124;text-top&#124;10px&#124;alt=Edit_this_at_Wikidata&#124;link=https&#58;//www.wikidata.org/wiki/Q209711#identifiers&#124;class=noprint&#124;Edit_this_at_Wikidata1260" style="font-size:114%;margin:0 4em">Authority control databases </div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">National</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4618499-5">Germany</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://id.loc.gov/authorities/sh99004731">United States</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://catalogue.bnf.fr/ark:/12148/cb144400247">France</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://data.bnf.fr/ark:/12148/cb144400247">BnF data</a></span></li><li><span class="uid"><span class="rt-commentedText tooltip tooltip-dotted" title="extrémní programování"><a rel="nofollow" class="external text" href="https://aleph.nkp.cz/F/?func=find-c&local_base=aut&ccl_term=ica=ph127853&CON_LNG=ENG">Czech Republic</a></span></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://datos.bne.es/resource/XX550562">Spain</a></span></li><li><span class="uid"><a rel="nofollow" class="external text" href="https://www.nli.org.il/en/authorities/987007539601005171">Israel</a></span></li></ul></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Other</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"><ul><li><span class="uid"><a rel="nofollow" class="external text" href="https://lux.collections.yale.edu/view/concept/389bb507-facc-414c-a93d-03a122a9c790">Yale LUX</a></span></li></ul></div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-08-03" href="https://en.wikipedia.org/wiki/?title=Extreme_programming&oldid=1304081570">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
</body></html>